<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
    <div id='app'>
        {{message}}
        <input type="text" v-model="message">
        <button>修改message</button>

        <input type="text" v-model="num1">
        <input type="text" v-model="num2">
        {{sum}}
    </div>
    <script>
        const vm = new Vue({
            el: '#app',
            data: {
                message: 'hello world',
                num1: 1,
                num2: 3,
                sum: 4
            },
            // 生命周期函数和data，el平级的
            // vue实例创建之前执行
            beforeCreate() {
                console.log("vue实例创建之前");
                console.log(this.message);
            },
            // 实例创建之后
            created() {
                console.log("vue实例创建之后");
                console.log(this.message);
                // 最早可以对数据初始化的地方
                // 在这个阶段会对data上的数据做一些初始化
                // data上的数据，可能来源于接口
            },
            beforeMount() {
                console.log("页面挂载之前");
            },
            mounted() {
                console.log("页面挂载之后");
                // 聚焦操作
                // 轮播图的渲染
                // 地图组件
                // 图标组件
            },
            // 更新之前
            beforeUpdate() {
                // debugger
                // 这里的操作一定是同步的，不能有异步操作
                // setTimeout(()=>{
                    this.sum = Number(this.num1) + Number(this.num2)
                // },100)
                // debugger
                // 记录用户行为
            },
            // 界面更新之后
            updated() {
                // debugger
                // 有一些依赖dom的需要在更新之后重新初始化
            },

            // 销毁阶段
            beforeDestroy() {
                // 主要用于清除监听事件 和计时器
            },

            destroyed() {
                // vue实例已经被销毁了                
            },
        })

        // 创建阶段
        // beforeCreate
        // created
        // beforeMount
        // mounted

        // // 运行阶段
        // beforeUpdate
        // updated

        // // 销毁阶段
        // beforeDestroy
        // destoryed

    </script>
</body>

</html>

